#include "camprec.h"
#include "LuaStackChecker.h"
#include "lua.hpp"

LuaStackChecker::LuaStackChecker(lua_State* L, const char* filename/* = ""*/, int line/* = 0*/)
: luaState_(L),
  filename_(filename),
  line_(line)
{
  top_ = lua_gettop(L);
}

LuaStackChecker::~LuaStackChecker()
{
  if(top_ != lua_gettop(luaState_))
  {
    //ERROR("Lua stack corrupted!")
    luaL_error(luaState_, "Lua stack corrupted! File [%s] line[%d]", filename_, line_);
  }
}

//bool getField(lua_State* L, int& field)
//{
//  // stack:
//  LuaStackChecker sc(L, __FILE__, __LINE__);
//
//  bool ret = false;
//  lua_getglobal(L, "table1"); // stack: table1
//  if(lua_istable(L, -1))
//  {
//    lua_getfield(L, -1, "field"); // stack: table1 field
//    if(lua_isnumber(L, -1))
//    {
//      field = (int)lua_tonumber(L, -1);
//      ret = true;
//    }
//    lua_pop(L, 1); // stack: table1
//  }
//  lua_pop(L, 1); // stack:
//
//  return ret;
//}
